package com.woniuxy.mapper;

import com.woniuxy.entity.DTO.ReceivingOrderDTO;
import com.woniuxy.entity.DTO.SorterDTO;


import java.util.List;

/**
* @author PC
* @description 针对表【sorter(分拣人员信息表)】的数据库操作Mapper
* @createDate 2025-05-12 17:09:13
* @Entity com.woniuxy.entity.Sorter
*/
public interface SorterMapper {

    /**
     * 查询所有的分拣员的id和name和手机号
     */
    List<SorterDTO> querySorterList();

    /**
     * 修改分拣员对应的仓库id(参数1：分拣员id；参数2：对应的仓库id)
     */
    Integer updateSorterById(Integer id,Integer warehouseId);

    /**
     * 查询对应仓库下的分拣员
     */
    List<SorterDTO> querySorterByWarehouseId(Integer warehouseId);

    /**
     * 通过名称模糊查询对应的分拣员
     */
    List<SorterDTO> querySorterByName(String sorterName,Integer warehouseId);

    /**
     * 解除分拣员的绑定仓库
     */
    void sorterUnbind(Integer id);

    /**
     * 注册分拣员账号
     */
    boolean register(SorterDTO sorterDTO);

    /**
     * 通过账号名来查询密码
     */
    SorterDTO queryPasswordByAccount(String sorterName);

    /**
     * 判断账号是否已经存在
     */
    boolean querySorterByAccount(String sorterAccount);

    /**
     * 根据账号名查询账号信息
     */
    SorterDTO queryProfileByAccount(String sorterName);

    /**
     * 通过账号名修改密码
     */
    boolean updatePasswordByAccount(String account,String newPassword);

    /**
     * 通过仓库id查询对应所属订单
     */
    List<ReceivingOrderDTO> queryOrdersByWarehouseId(Integer warehouseId);

    /**
     * 一键接单，修改sorting表中sorter_id的值
     */
    boolean updateSorting(Integer sorterId,String orderId);

    /**
     * 获取该分拣员用户对应的订单
     */
    List<ReceivingOrderDTO> queryOrdersBySorterId(Integer sorterId);

    /**
     * 完成分拣按钮，把订单状态设为1，并把分拣时间设为下单时间减当前时间
     */
    boolean updateSortingStatus(String orderId);

    /**
     * 查询对应订单id下的商品明细
     */
    List<ReceivingOrderDTO> queryOrderGoods(String orderId);

    /**
     * 查询当日的总分拣单数
     */
    Integer getDailyPerformance(Integer sorterId);

    /**
     * 查询本月的总分拣单数
     */
    Integer getMonthlyPerformance(Integer sorterId);

    /**
     * 头像上传
     */
    void imgLoad(Integer id,String imgSrc);
}
